如何应用plugin
根据官方文档,使用plugin分两步:
- 解析(Resolve): 找到包含给定插件的jar的正确版本,并将其添加到脚本类路径中
- 应用(apply):即调用plugin,应用插件也分两种
- 脚本plugin 它的写法是
apply from 'other.gradle'
, - 二进制plugin 执行
Plugin.apply(T)
- 脚本plugin 它的写法是
other.gradle
指文件目录与文件名或Http Url
两种写法
1. apply plugin
这种是我们相对比较熟悉的老的写法,它的解析和应用是分开的。以butterknife为例,一般我们会在Android工程根目录下的build.gradle文件中去引入(解析)这个plugin:
然后在子工程的build.gradle文件中去应用它:
2. plugins
这种新的写法叫plugins DSL,它的解析和应用是合并的:
1 | plugins { |
对于核心plugin,比如com.android.application
、java
,版本号可以省略:
而后面的apply
加上boolean值用来控制是否要立即应用该插件。比如我只想在工程的某个子工程中应用该插件:
1 | plugins { |
这种情况下在子工程apply的版本号可以省略。
不过,重点来了!这种写法的前提是要使用的plugin是核心plugin或者发布在[Gradle plugin repository才可以!也就是说如果你自己写的gradle plugin或者公司的gradle plugin,除非是在插件仓库发布过的,否则只能使用第一种方式。
总结
apply plugin和plugins是使用插件的两种方式,apply plugin是老的写法,使用相对复杂,但是更灵活。 plugins是比较新的写法,它将解析和应用两个步骤合并了,也是官方比较推荐的写法,缺点是只有核心插件和发布在gradle插件仓库的plugin才能用这种写法。